The invention relates to the generation of error correction check bits when storing partial data words.
In U.S. Pat. No. 3,573,728 words which are eight bytes each made up of eight data bits and one parity bit are supplemented by error detection and correction check bits and stored together in memory. Only full words, that is, those words which contain eight data bytes can be used for calculating the check bits and stored. However, when a partial data block is stored in memory the first or the last word or both of the data block to be stored could be a partial word. That is, a word which does not have a full complement of eight bytes. To overcome this dilemma, any partial word in the data block is pre-stored in the input data register of the storage. Subsequently, a data word containing the bytes required to supplement the partial word is read from storage, and combined with the partial word to generate a full word. In producing this generated full word, the word read out of storage must be checked for errors using the error detection and correction code. The reading out and checking of the word from storage in this manner has disadvantages, not the least of them being it causes considerable delays in the transfer of partial data blocks from the processor of the data processing system into storage particularly if the procedure has to be performed twice.
German patent AS 2 133 323 deals with the partial word storage problem in a half-word organized storage whose half-words comprise two bytes, one byte of which has to be changed. German patent AS 2 133 323 suggests that the two bytes be read into two separate registers and check bits calculated separately for each byte. Due to the division into individual bytes, the device described in the German patent avoids the difficulties connected with the combination of partial words supplied by the processor with full words read out of the storage. However the device described in the mentioned German patent has a very high number of check bits to be calculated for each data byte. For eight bytes it would require the calculations and processing of 32 to 40 check bits. It is obvious that in view of its high demand on storage space and check bit processing this solution is out of the question for most data processing systems.